DynamoDB是AWS提供的database服務中的一個,屬於NoSQL資料庫類型,也就是Not only SQL。本篇列出了解DynamoDB基本概觀項目及AWS文件,是在使用前必須要了解的內容。有了正確的認知,對於之後的設計/使用上才不會背離服務應用特點。我個人認為DynamoDB屬於key-value資料庫類型。
如果你用過RDBMS(關聯性資料庫),就更要清楚了解DynamoDB元件設計上的相異之處,因為還是用RDBMS的資料設計方式會發現有的地方不適用,而且喪失DynamoDB的特性喔。
理解DynamoDB可以說是理解整個設計及使用操作的核心所在,DynamoDB的索引原則上只有兩種類型。
當然因為是主要索引鍵,就必須是唯一存在,前者就是PK必須唯一,後者即是PK+SK必須唯一。要注意的是,索引就只有這兩種類型,無法存在僅有Sort key的索引。
次要索引還有分兩種索引,但是原則上類型跟使用上跟主索引鍵都一樣,差別是次要索引僅是用來取得Item,或者說是用不同的角度來取得資料。
當然,以上次要索引就不須唯一存在了。
另外稍微要注意的是
DynamoDB 中的每個資料表限制為 20 個全域次要索引 (預設限制) 與 5 個本機次要索引。
強調一點關鍵的概念是,DynamoDB屬於key-value類型,在RDBMS的index可以是加快搜尋的功能。但是在DynamoDB裡不是這樣,索引就是你找到資料的唯一方式,否則就是用Scan搜尋。 這有甚麼差別呢,只要跟你說一件事就好,AWS對於DynamoDB收取費用的方式是取得item的size,但是這不是指最終取得的result item,而是指從分割區取得資料的size。所以差別在於,Scan即代表將該Table所有Item取出後才篩選你要的result,也就是你查找的範圍都會計算費用
。當然,使用Scan還有其他取資料的問題跟特性,這點在未來如果有機會提到Scan或filter的時候會再提及